"Changes the cursor when the mouse rolls over the current sprite. " & \
"Choose one of the pointers included with Director, or specify two 1-bit 16x16 pixel bitmap members: one to act as the pointer image, the other to define the transparent/opaque areas of the cursor." & RETURN & RETURN & \
"TIPS:" & RETURN & \
"Place a single pixel at the topRight and bottomLeft of the image itself to create what is in fact a 17x17 pixel bitmap. " & \
"These extra pixels will not appear in the cursor (they will be clipped) but the mask will align with them. " & \
"This ensures that the opaque area surrounds the cursor image correctly." & RETURN & RETURN & \
"Set the regPoint of the image to define the cursor's hotspot." & RETURN & RETURN & \
"PARAMETERS:" & RETURN & \
"* EITHER - Use one of Director's built-in cursors." & RETURN & RETURN & \
"* OR - Use your own bitmap images." & RETURN & \
"* Custom Image " & RETURN & \
"* Custom Mask" & RETURN & RETURN & \
"To use custom images, ensure that " & QUOTE & "1 bit bitmap" & QUOTE & " is selected as the type of cursor."
end getBehaviorDescription
on getBehaviorTooltip me
return \
"Use with graphic members." & RETURN & RETURN & \
"Modifies the cursor when the mouse rolls over a sprite." & RETURN & RETURN & \
"You can use built-in or custom images for the cursor."
end getBehaviorTooltip
-- PROPERTIES --
property spriteNum
-- author-defined parameters
property myCursorType
property myBuiltInCursor
property myCursorMember
property myCustomCursor
property myCustomMask
-- internal properties
property mySprite
property mySavedCursor
-- EVENT HANDLERS --
on beginSprite me
SetSpriteCursor me
end beginSprite
on endSprite me
mySprite.cursor = mySavedCursor
end endSprite
-- CUSTOM HANDLER --
on SetSpriteCursor me
mySprite = sprite (me.spriteNum)
-- Save cursor to revert to
mySavedCursor = mySprite.cursor
-- Set the cursor of the sprite
if voidP (myCursorType) then
mySprite.cursor = myBuiltInCursor
exit
end if
case myCursorType of
"Built-in cursor":
mySprite.cursor = myBuiltInCursor
"Cursor Member":
myCursorMember = value (myCursorMember)
cursorList = [myCursorMember.number]
mySprite.cursor = cursorList
"1 bit bitmap":
myCustomCursor = value (myCustomCursor)
cursorList = [myCustomCursor.number]
if myCustomMask <> "no mask" then
myCustomMask = value (myCustomMask)
cursorList.append(myCustomMask.number)
end if
mySprite.cursor = cursorList
end case
end SetSpriteCursor
-- AUTHOR-DEFINED PARAMETERS --
on isOKToAttach (me, aSpriteType, aSpriteNum)
case aSpriteType of
#graphic:
return TRUE
#script:
return FALSE
end case
end isOKToAttach
on getPropertyDescriptionList me
if not the currentSpriteNum then exit
propertyDescriptionList = [:]
cursorTypes = []
cursorMembersList = GetCursorMembers (me)
cursorBitmapsList = GetCursorBitmaps (me)
cursorMasksList = duplicate (cursorBitmapsList)
cursorMasksList.addAt (1, "no mask")
cursorMembers = cursorMembersList.count()
bitmapCursors = cursorBitmapsList.count()
if cursorMembers then
cursorTypes.append ("Cursor Member")
end if
if bitmapCursors then
cursorTypes.append ("1 bit bitmap")
end if
if cursorTypes.count() then
cursorTypes.addAt (1, "Built-in cursor")
propertyDescriptionList.addProp \
( \
#myCursorType, \
[\
#comment: "CHOICE OF TYPE - Use which type of cursor?", \
#format: #string, \
#range: cursorTypes, \
#default: cursorTypes[1]\
] \
)
propertyDescriptionList.addProp \
( \
#myBuiltInCursor, \
[\
#comment: "CHOICE OF CURSOR - Built-in cursor:", \
#format: #cursor, \
#default: 280\
] \
)
else
return \
[ \
#myBuiltInCursor: \
[\
#comment: "Use which cursor?", \
#format: #cursor, \
#default: 280\
] \
]
end if
if cursorMembers then
propertyDescriptionList.addProp \
( \
#myCursorMember, \
[\
#comment: "- Cursor member:", \
#format: #member, \
#range: cursorMembersList, \
#default: cursorMembersList[1] \
] \
)
end if
if bitmapCursors then
propertyDescriptionList.addProp \
( \
#myCustomCursor, \
[ \
#comment: "- 1 bit bitmap (image)", \
#format: #bitmap, \
#range: cursorBitmapsList, \
#default: cursorBitmapsList[1]\
] \
)
propertyDescriptionList.addProp \
( \
#myCustomMask, \
[ \
#comment: "1 bit bitmap (mask)", \
#format: #bitmap, \
#range: cursorMasksList, \
#default: cursorMasksList[1]\
] \
)
end if
return propertyDescriptionList
end
on GetCursorMembers me
cursorMembersList = []
maxCastLib = the number of castLibs
repeat with theCastLib = 1 to maxCastLib
maxMember = the number of members of castLib theCastLib
repeat with memberNumber = 1 to maxMember
theMember = member(memberNumber, theCastLib)
if theMember.type = #cursor then
if theMember.name = EMPTY then
cursorMembersList.append(theMember)
else
cursorMembersList.append(theMember.name)
end if
end if
end repeat
end repeat
return cursorMembersList
end GetCursorMembers
on GetCursorBitmaps me
cursorBitmapsList = []
maxCastLib = the number of castLibs
repeat with theCastLib = 1 to maxCastLib
maxMember = the number of members of castLib theCastLib